'use strict';

const db = uniCloud.database()

//导入加密模块
const crypto = require("crypto");

const player_attr = {
	hp : 50,
	min_ac : 1,
	max_ac : 2,
	min_def : 0,
	max_def : 1,
	spd : 50,
	suck_blood : 0, //吸血
	exp_percent : 0 ,//经验加成
	coin_percent : 0,//金币加成
	fix_ac : 0, //固伤
	fix_def : 0, //固防
	crit : 0,
	crit_percent : 110, //暴击伤害
}

const _player = {
	lv:1,
	resource : {
		exp : 0,
		coin : 0, //金币
		gem : 0, //元宝
	},
	base_attr : player_attr,
	attr : player_attr,
	retrieveValue : {},
	backpack : [],
	equip : []
}

/* 
	错误码：
	20001 : 已存在角色
	20002 : 该账号已经创建了角色
	20003 : 未查询到角色
	40001 : 缺少UID
	
 */

exports.main = async (event, context) => {
	//event为客户端上传的参数
	console.log('player : ', event,context)
	
	// data['_d'] = Date.parse(new Date());
	// let __UNI__= `'/pages/login/login'${data['_d']}.__UNI__D08201C.|`;
	// data['callFunction'] = new Buffer(__UNI__).toString('base64')+'.wh=';
	
	
	let decryptStr = new Buffer(`'/pages/login/login'${event._d}.__UNI__D08201C.|`).toString('base64')+'.wh=';
	
	
	if(event['function'] != decryptStr){
		return {
			errcode : 40001,
			msg : '干坏事？封你号哦！'
		}
	}

	
	if(!event.uid || context.PLATFORM != 'web'){
		return {
			errcode : 40001,
			msg : '缺少UID'
		}
	}
	
	let account = await db.collection('account').where({
		_id: event.uid
	}).get();
	
	
	if(account.data.length <= 0){
		
		//删除对应角色
		await db.collection('player').where({
			uid: event.uid
		}).remove();
		
		return {
			errcode : 40001,
			msg : '无法查到该账户'
		}
	}
	
	/*
		账号检测是否有角色
	 */
	if(event.method == 'check_player'){
		
		//检测该账户是否已经创建角色
		let playerData = await db.collection('player').where({
			uid: event.uid
		}).get();
		return {
			errcode : 0,
			data : {
				player : playerData.data.length
			},
			msg : '账号角色数量获取成功'
		}
	}
	
	/* 
		账号创建角色
	 */
	if(event.method == 'create_player'){
		
		//检测是否有重复角色名
		let player_nickname = await db.collection('player').where({
			nickname: event.nickname
		}).get();
		
		if(player_nickname.data.length > 0){
			return {
				errcode : 20001,
				msg : '该角色名已注册'
			}
		}
		
		//检测该账户是否已经创建角色
		let account_has_player = await db.collection('player').where({
			uid: event.uid
		}).get();
		
		if(account_has_player.data.length > 0){
			return {
				errcode : 20002,
				msg : '该账号已经创建了角色'
			}
		}
		
		

		
		await db.collection('player').add({
			nickname : event.nickname,
			uid : event.uid,
			create_time : Date.parse(new Date()),
			auth : 0,
			..._player
		});
		
		return {
			errcode : 0,
			msg : '角色创建成功'
		}
		
		
	}
	
	
	/* 
		获取角色信息
	 */
	
	if(event.method == 'get_player'){
		
		let update_add_key = {};
		let update_remove_key = {};
		
		//检测该账户是否已经创建角色
		let playerData = await db.collection('player').where({
			uid: event.uid
		}).get();

		
		if(playerData.data.length <= 0){
			return {
				errcode : 20003,
				msg : '未查询到角色'
			}
		}else{			
			return {
				errcode : 0,
				data : playerData.data[0],
				msg : '获取角色成功'
			}
		}
		
		
		
	}
	
	
	
	
	/*
		保存玩家数据
	 */
	if(event.method == 'save_player'){

		try{
			console.log('player_data',event.player_data)
			await db.collection('player').where({uid: event.uid}).update(event.player_data);
			
			return {
				errcode : 0,
				msg : '角色数据保存成功'
			}
		}catch(e){
			

		}
		
		
	}
	
	
	
	
	
};
